package Behavioral.Interpreter.inter;

import org.w3c.dom.Element;

import java.util.List;


//新添加一个解释器，用来解释处理以多个元素的属性作为终结符的情况，它的实现比较简单，只要获取到最后的多个元素对象，然后循环这些元素，一个一个取出相应的属性值就好了，示例代码如下：

/**
 * 以多个元素的属性做为终结符的解释处理对象
 */
public class PropertiesTerminalExpression extends ReadXmlExpression{
    /**
     * 属性名字
     */
    private String propName;
    public PropertiesTerminalExpression(String propName){
        this.propName = propName;
    }

    @Override
    public String[] interpret(Context c) {
        //获取最后的多个元素
        List<Element> eles = c.getPreEles();

        String[] ss = new String[eles.size()];
        //循环多个元素，获取每个的属性的值
        for(int i=0;i<ss.length;i++){
            ss[i] = eles.get(i).getAttribute(this.propName);
        }
        return ss;
    }
}